/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package simhya.simengine.stochastic;
import simhya.dataprocessing.DataCollector;
import simhya.model.stochastic.StochasticModel;
import simhya.simengine.ProgressMonitor;
import simhya.simengine.TerminationCondition;

/**
 *
 * @author Luca
 */
public interface StochasticSimulator {

     
    /**
     * sets the initial time of the simulation
     * @param time
     */
    public void setInitialTime(double time);
    /**
     * Sets the final time of the simulation
     * @param time
     */
    public void setFinalTime(double time);
    //public void setFinalTime(TerminationCondition termination);
    public void setProgressMonitor(ProgressMonitor monitor);
    public void initialize(); 
    public void reset(DataCollector dc);
    public void run();
    /**
     *
     * @return the last simulation time in milliseconds
     */
    public double getLastSimulationTime();
    public long getLastSimulationSteps();
    public long getLastSimulationDelayedSteps();
    public long getLastSimulationInstantaneousSteps();
    public long getLastSimulationStochasticSteps();
    public long getLastSimulationTimedSteps();
    
}
